HaskellのError Handling
MonadErrorモナド
ExceptTモナド変換子
参考記事
try節内の例外のみをcatchする
exceptionalパッケージ
Haskell標準のライブラリ
Control.Exception
例外モジュールがIO型に依存しているので扱いづらいらしい
標準だが今はあまり使わないっぽい
参考記事
Control.Monad.Error
ErrorT
ErrorTモナド変換子を使うと
type Eval2 a = ErrorT String Identity a
Stringでエラーの状態を示す
ここではエラーメッセージを表示するだけなのでStringだが、
コードの位置やタイムスタンプを示す型にもできる
エラーメッセージ
* Checked+Impure: ExceptT
* Unchecked+Impure: IO
* Checked+Pure: Either
* Unchecked+Pure: BAD (not in type)